Computers have become highly integrated in the workforce, in the home, in mobile devices, and many other places. Computers can process massive amounts of information quickly and efficiently. Software applications designed to run on computer systems allow users to perform a wide variety of functions including business applications, schoolwork, entertainment and more. Software applications are often designed to perform specific tasks, such as word processor applications for drafting documents, or email programs for sending, receiving and organizing email.
Computer systems include many different hardware components. Some of these components include memory arenas. Memory arenas include hardware memory components (or portions thereof) that are accessible by other components. For example, a central processing unit (CPU) may include multiple memory arenas, some of which are accessible by a graphics processing unit (GPU). A GPU itself may also have various memory arenas, some of which may be accessible by the CPU. Thus, when transferring data between CPU and GPU memory arenas, data may need to be first transferred to a memory arena that is accessible by the other component. Such data transfers may be resource intensive.